﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace kostenbuch
{
    //Klasse, die den Hintergrund der Zeilen im Wechsel anpasst
    //source: http://msdn.microsoft.com/de-de/library/ms750769%28v=vs.85%29.aspx Methode 3
    public class ListViewItemStyleSelector : StyleSelector
    {
        public override Style SelectStyle(object item,
            DependencyObject container)
        {
            //Style fuer den Typ ListViewItem erstellen
            Style st = new Style();
            st.TargetType = typeof(ListViewItem);
            //Setter erstellen, der die Hintergrundfarbe eines ListViewItems bestimmt
            Setter backGroundSetter = new Setter();
            backGroundSetter.Property = ListViewItem.BackgroundProperty;
            //Verbindung zu dem Element, welches durch den Style beeinflusst werden soll
            ListView listView =
                ItemsControl.ItemsControlFromItemContainer(container)
                  as ListView;
            //Position/Index des ListViewItems auslesen und Hintergrund anpassen
            //bei gradem Index "LightBlue", bei ungeradem "Beige"
            int index =
                listView.ItemContainerGenerator.IndexFromContainer(container);
            if (index % 2 == 0)
            {
                backGroundSetter.Value = Brushes.LightBlue;
            }
            else
            {
                backGroundSetter.Value = Brushes.Beige;
            }
            //HIntergrund zum Style hinzufuegen und Style zurueckgeben
            st.Setters.Add(backGroundSetter);
            return st;
        }
    }    
}
